#ifndef LOADEROFF_H
#define LOADEROFF_H

/**
 * \file LoaderOFF.h
 * \brief Fichier contenant les fonctions de chargement des nuages de points en fichiers .off en mémoire.
 */

/**
 * \fn int loadOffFile ( char* _fileName, PointCloud* _rslt );
 * \brief Fonction qui charge en mémoire un fichier .off contenant un nuage de points.
 *
 * \param _filename : Nom du fichier .off à charger.
 * \param _rslt : Nuage de point chargé en mémoire.
 * \return 0 si aucune erreur ne s'est produite, 1 sinon.
 */
int loadOffFile ( char* _fileName, PointCloud* _rslt );

/**
 * \fn int loadOffFile ( char* _fileName, PointCloud* _rslt, float _zMin, float _zMax );
 * \brief Fonction qui charge en mémoire une coupe dans la hauteur d'un fichier .off contenant un nuage de points.
 *
 * \param _filename : Nom du fichier .off à charger.
 * \param _rslt : Nuage de point chargé en mémoire.
 * \param _zMin : Hauteur minimale de la coupe.
 * \param _zMax : Hauteur maximale de la coupe.
 * \return 0 si aucune erreur ne s'est produite, 1 sinon.
 */
int loadOffFile ( char* _fileName, PointCloud* _rslt, float _zMin, float _zMax );

/**
 * \fn int loadOffFile ( char* _fileName, PointCloud* _rslt,  float* _xMin, float* _yMin, float* _xMax, float* _yMax )
 * \brief Fonction qui charge en mémoire une coupe dans la hauteur d'un fichier .off contenant un nuage de points. Les parametres _x et _y doivent etre passés par adresse.
 *
 * \param _filename : Nom du fichier .off à charger.
 * \param _rslt : Nuage de point chargé en mémoire.
 * \param _xMin : Abscisse minimale du nuage de point.
 * \param _yMin : Ordonnée minimale du nuage de point.
 * \param _xMax : Abscisse maximale du nuage de point.
 * \param _yMax : Ordonnée maximale du nuage de point.
 * \return 0 si aucune erreur ne s'est produite, 1 sinon.
 */
int loadOffFile ( char* _fileName, PointCloud* _rslt,  float* _xMin, float* _yMin, float* _xMax, float* _yMax );

/**
 * \fn int loadOffFile ( char* _fileName, PointCloud* _rslt,  float* _xMin, float* _yMin, float* _xMax, float* _yMax )
 * \brief Fonction qui charge en mémoire une coupe dans la hauteur d'un fichier .off contenant un nuage de points. Les parametres _x, _y et _z doivent etre passés par adresse.
 *
 * \param _filename : Nom du fichier .off à charger.
 * \param _rslt : Nuage de point chargé en mémoire.
 * \param _xMin : Abscisse minimale du nuage de point.
 * \param _yMin : Ordonnée minimale du nuage de point.
 * \param _zMin : Hauteur minimale du nuage de point.
 * \param _xMax : Abscisse maximale du nuage de point.
 * \param _yMax : Ordonnée maximale du nuage de point.
 * \param _zMax : Hauteur maximale du nuage de point.
 * \return 0 si aucune erreur ne s'est produite, 1 sinon.
 */
int loadOffFile ( char* _fileName, PointCloud* _rslt,  float* _xMin, float* _yMin, float* _zMin, float* _xMax, float* _yMax, float* _zMax );

#endif
